home *** CD-ROM | disk | FTP | other *** search
/ Aminet 6 / Aminet 6 - June 1995.iso / Aminet / dev / e / capus2.lha / capus2 / 3DView / Sources / 3DArexx.e next >
Encoding:
Text File  |  1995-03-20  |  6.2 KB  |  167 lines

  1. DEF arexxport:PTR TO mp
  2. DEF arexxportname[80]:STRING
  3. /*"p_CreateArexxPort(nom,pri)"*/
  4. PROC p_CreateArexxPort(nom,pri) HANDLE
  5. /*===============================================================================
  6.  = Para         : name (STRING),pri (NUM).
  7.  = Return       : the address of the port if ok,else NIL.
  8.  = Description  : Create a public port.
  9.  ==============================================================================*/
  10.     DEF dat_port:PTR TO ln
  11.     IF FindPort(nom)<>0 THEN Raise(ER_PORTEXIST)
  12.     arexxport:=CreateMsgPort()
  13.     IF arexxport=0
  14.         Raise(ER_CREATEPORT)
  15.     ENDIF
  16.     dat_port:=arexxport.ln
  17.     dat_port.name:=nom
  18.     dat_port.pri:=pri
  19.     dat_port.type:=NT_MSGPORT
  20.     arexxport.flags:=PA_SIGNAL
  21.     IF nom<>NIL
  22.         AddPort(arexxport)
  23.     ENDIF
  24.     Raise(ER_NONE)
  25. EXCEPT
  26.     RETURN exception
  27. ENDPROC
  28. /**/
  29. /*"p_DeleteArexxPort(adr_port:PTR TO mp)"*/
  30. PROC p_DeleteArexxPort(adr_port:PTR TO mp)
  31. /*===============================================================================
  32.  = Para         : Address of port.
  33.  = Return       : NONE
  34.  = Description  : Remove a public port.
  35.  ==============================================================================*/
  36.     DEF data_port:PTR TO ln
  37.     data_port:=adr_port.ln
  38.     IF data_port.name<>NIL THEN RemPort(adr_port)
  39.     IF adr_port THEN DeleteMsgPort(adr_port)
  40. ENDPROC
  41. /**/
  42. /*"p_LookArexxMessage()"*/
  43. PROC p_LookArexxMessage()
  44. /*===============================================================================
  45.  = Para         : NONE
  46.  = Return       : NONE
  47.  = Description  : Process arexx Messge.
  48.  ==============================================================================*/
  49.     DEF mess_rexx:PTR TO rexxmsg
  50.     DEF commande:PTR TO LONG
  51.     DEF retstr[256]:STRING
  52.     DEF pv[256]:STRING
  53.     DEF varpv
  54.     DEF pvobj:PTR TO object3d
  55.     DEF pvn:PTR TO ln
  56.     dWriteF(['p_LookArexxMessge()\n'],0)
  57.     WHILE mess_rexx:=GetMsg(arexxport)
  58.         commande:=mess_rexx.args
  59.         /*=== Commande LISTOBJ : retourne les noms des objets <nom1> <nom2> ===*/
  60.         IF StrCmp(commande[0],'LISTOBJ',7)
  61.             mess_rexx.result1:=0
  62.             retstr:=p_MakeArexxListObject(mybase.objlist)
  63.             mess_rexx.result2:=String(EstrLen(retstr))
  64.             StrCopy(mess_rexx.result2,retstr,EstrLen(retstr))
  65.         /*=== Commande NBRSOBJ : retourne le nombres d'objets de la base ===*/
  66.         ELSEIF StrCmp(commande[0],'NBRSOBJ',7)
  67.             StringF(retstr,'\d',mybase.nbrsobjs)
  68.             mess_rexx.result1:=0
  69.             mess_rexx.result2:=String(EstrLen(retstr))
  70.             StrCopy(mess_rexx.result2,retstr,EstrLen(retstr))
  71.         /*=== Commande NBRSTOTALPTS: retourne le nombres totals de points. ===*/
  72.         ELSEIF StrCmp(commande[0],'NBRSTOTALPTS',12)
  73.             StringF(retstr,'\d',mybase.totalpts)
  74.             mess_rexx.result1:=0
  75.             mess_rexx.result2:=String(EstrLen(retstr))
  76.             StrCopy(mess_rexx.result2,retstr,EstrLen(retstr))
  77.         /*=== Commande NBRSTOTALFCS: retourne le nombres totals de faces. ===*/
  78.         ELSEIF StrCmp(commande[0],'NBRSTOTALFCS',12)
  79.             StringF(retstr,'\d',mybase.totalfcs)
  80.             mess_rexx.result1:=0
  81.             mess_rexx.result2:=String(EstrLen(retstr))
  82.             StrCopy(mess_rexx.result2,retstr,EstrLen(retstr))
  83.         /*=== Commande GETNUMINFOOBJ: retourne les informations sur l'objet ===*/
  84.         /*=== NAME NRSPTS NBRSFCS ADRDATAPTS ADRDATAFCS TYPE                ===*/
  85.         ELSEIF StrCmp(commande[0],'GETNUMINFOOBJ',13)
  86.             MidStr(pv,commande[0],14,ALL)
  87.             pv:=TrimStr(pv)
  88.             varpv:=Val(pv,NIL)
  89.             IF pvn:=p_GetAdrNode(mybase.objlist,varpv)
  90.                 pvobj:=pvn
  91.                 StringF(retstr,'\s \d \d \d \d \s',pvn.name,pvobj.nbrspts,pvobj.nbrsfcs,pvobj.datapts,pvobj.datafcs,data_objtype[pvobj.typeobj])
  92.                 mess_rexx.result1:=0
  93.                 mess_rexx.result2:=String(EstrLen(retstr))
  94.                 StrCopy(mess_rexx.result2,retstr,EstrLen(retstr))
  95.             ELSE
  96.                 mess_rexx.result1:=20
  97.                 mess_rexx.result2:=String(EstrLen(''))
  98.                 StrCopy(mess_rexx.result2,retstr,EstrLen(''))
  99.             ENDIF
  100.         /*=== Commande GETNAMEINFOOBJ : retourne les informations sur l'objet. ===*/
  101.         ELSEIF StrCmp(commande[0],'GETNAMEINFOOBJ',14)
  102.             MidStr(pv,commande[0],15,ALL)
  103.             pv:=TrimStr(pv)
  104.             IF pvobj:=FindName(mybase.objlist,pv)
  105.                 pvn:=pvobj
  106.                 StringF(retstr,'\s \d \d \d \d \s',pvn.name,pvobj.nbrspts,pvobj.nbrsfcs,pvobj.datapts,pvobj.datafcs,data_objtype[pvobj.typeobj])
  107.                 mess_rexx.result1:=0
  108.                 mess_rexx.result2:=String(EstrLen(retstr))
  109.                 StrCopy(mess_rexx.result2,retstr,EstrLen(retstr))
  110.             ELSE
  111.                 mess_rexx.result1:=20
  112.                 mess_rexx.result2:=String(EstrLen(''))
  113.                 StrCopy(mess_rexx.result2,retstr,EstrLen(''))
  114.             ENDIF
  115.         ELSE
  116.             mess_rexx.result1:=20
  117.             mess_rexx.result2:=String(EstrLen(''))
  118.             StrCopy(mess_rexx.result2,retstr,EstrLen(''))
  119.         ENDIF
  120.         dWriteF(['Commande :\s\n'],[commande[0]])
  121.         IF mess_rexx THEN ReplyMsg(mess_rexx)
  122.         IF mess_rexx.result2 THEN DisposeLink(mess_rexx.result2)
  123.     ENDWHILE
  124.     WHILE mess_rexx:=GetMsg(arexxport) DO ReplyMsg(arexxport)
  125. ENDPROC
  126. /**/
  127. /*"p_MakeArexxListObject(list:PTR TO lh)"*/
  128. PROC p_MakeArexxListObject(list:PTR TO lh)
  129.     DEF n:PTR TO ln
  130.     DEF str[256]:STRING
  131.     DEF rstr[256]:STRING
  132.     StrCopy(str,'',ALL)
  133.     n:=list.head
  134.     WHILE n
  135.         IF n.succ<>0
  136.             StrAdd(str,n.name,ALL)
  137.             StrAdd(str,' ',1)
  138.         ENDIF
  139.         n:=n.succ
  140.     ENDWHILE
  141.     RETURN str
  142. ENDPROC
  143. /**/
  144. /*"p_WriteFObject(num)"*/
  145. PROC p_WriteFObject(num) 
  146.     DEF ob:PTR TO object3d
  147.     DEF dpts,dfcs,b
  148.     DEF node:PTR TO ln
  149.     ob:=p_GetAdrNode(mybase.objlist,num)
  150.     dpts:=ob.datapts
  151.     dfcs:=ob.datafcs
  152.     node:=ob.node
  153.     WriteF('Object Name:\s \d \d\n',node.name,ob.datapts,ob.datafcs)
  154.     /*
  155.     FOR b:=0 TO ob.nbrspts-1
  156.         WriteF('x:\d y:\d z:\d\n',Long(dpts),Long(dpts+4),Long(dpts+8))
  157.         dpts:=dpts+12
  158.     ENDFOR
  159.     FOR b:=0 TO ob.nbrsfcs-1
  160.         WriteF('v1:\d v2:\d v3:\d\n',Long(dfcs),Long(dfcs+4),Long(dfcs+8))
  161.         dfcs:=dfcs+12
  162.     ENDFOR
  163.     */
  164. ENDPROC
  165. /**/
  166.  
  167.